if(WINDOWS)
  if(NOT WINRT)
    set(_AX_UI_SPECIFIC_HEADER
      ui/UIEditBox/UIEditBoxImpl-win32.h
    )
    set(_AX_UI_SPECIFIC_SRC
      ui/UIEditBox/UIEditBoxImpl-win32.cpp
    )
  else()
    set(_AX_UI_SPECIFIC_HEADER
      ui/UIEditBox/UIEditBoxImpl-winrt.h
    )
    set(_AX_UI_SPECIFIC_SRC
      ui/UIEditBox/UIEditBoxImpl-winrt.cpp
    )
  endif()

  if(AX_ENABLE_MSEDGE_WEBVIEW2)
    list(APPEND _AX_UI_SPECIFIC_HEADER ui/UIWebView/UIWebViewImpl-win32.h ui/UIWebView/UIWebView.h)
    list(APPEND _AX_UI_SPECIFIC_SRC ui/UIWebView/UIWebViewImpl-win32.cpp ui/UIWebView/UIWebView.cpp)
  endif()
elseif(APPLE)
  if(MACOSX)
    set(_AX_UI_SPECIFIC_HEADER
      ui/UIEditBox/UIEditBoxImpl-mac.h
      ui/UIEditBox/Mac/UIPasswordTextField.h
      ui/UIEditBox/Mac/UIMultilineTextField.h
      ui/UIEditBox/Mac/UITextInput.h
      ui/UIEditBox/Mac/UIEditBoxMac.h
      ui/UIEditBox/Mac/UISingleLineTextField.h
      ui/UIEditBox/Mac/UITextFieldFormatter.h
    )
    set(_AX_UI_SPECIFIC_SRC
      ui/UIEditBox/UIEditBoxImpl-mac.mm
      ui/UIEditBox/Mac/UIEditBoxMac.mm
      ui/UIEditBox/Mac/UIMultilineTextField.m
      ui/UIEditBox/Mac/UIPasswordTextField.m
      ui/UIEditBox/Mac/UISingleLineTextField.m
      ui/UIEditBox/Mac/UITextFieldFormatter.m
    )
  elseif(IOS)
    if(TVOS)
      set(_AX_UI_SPECIFIC_HEADER
        ui/UIEditBox/UIEditBoxImpl-ios.h
        ui/UIEditBox/iOS/UIEditBoxIOS.h
        ui/UIEditBox/iOS/UIMultilineTextField.h
        ui/UIEditBox/iOS/UITextInput.h
        ui/UIEditBox/iOS/UITextView+UITextInput.h
        ui/UIEditBox/iOS/UITextField+UITextInput.h
        ui/UIEditBox/iOS/UISingleLineTextField.h
      )
      set(_AX_UI_SPECIFIC_SRC
        ui/UIEditBox/UIEditBoxImpl-ios.mm
        ui/UIEditBox/iOS/UIEditBoxIOS.mm
        ui/UIEditBox/iOS/UIMultilineTextField.mm
        ui/UIEditBox/iOS/UISingleLineTextField.mm
        ui/UIEditBox/iOS/UITextField+UITextInput.mm
        ui/UIEditBox/iOS/UITextView+UITextInput.mm
      )
    else()
      set(_AX_UI_SPECIFIC_HEADER
        ui/UIWebView/UIWebView.h
        ui/UIWebView/UIWebViewImpl-ios.h
        ui/UIEditBox/UIEditBoxImpl-ios.h
        ui/UIEditBox/iOS/UIEditBoxIOS.h
        ui/UIEditBox/iOS/UIMultilineTextField.h
        ui/UIEditBox/iOS/UITextInput.h
        ui/UIEditBox/iOS/UITextView+UITextInput.h
        ui/UIEditBox/iOS/UITextField+UITextInput.h
        ui/UIEditBox/iOS/UISingleLineTextField.h
      )
      set(_AX_UI_SPECIFIC_SRC
        ui/UIWebView/UIWebView.mm
        ui/UIWebView/UIWebViewImpl-ios.mm
        ui/UIEditBox/UIEditBoxImpl-ios.mm
        ui/UIEditBox/iOS/UIEditBoxIOS.mm
        ui/UIEditBox/iOS/UIMultilineTextField.mm
        ui/UIEditBox/iOS/UISingleLineTextField.mm
        ui/UIEditBox/iOS/UITextField+UITextInput.mm
        ui/UIEditBox/iOS/UITextView+UITextInput.mm
      )
    endif()
  endif()
elseif(LINUX)
  set(_AX_UI_SPECIFIC_HEADER
    ui/UIEditBox/UIEditBoxImpl-linux.h
    ui/UIWebView/UIWebView.h
    ui/UIWebView/UIWebViewImpl-linux.h
  )
  set(_AX_UI_SPECIFIC_SRC
    ui/UIEditBox/UIEditBoxImpl-linux.cpp
    ui/UIWebView/UIWebViewImpl-linux.cpp
    ui/UIWebView/UIWebView.cpp
  )
elseif(EMSCRIPTEN)
  set(_AX_UI_SPECIFIC_SRC
    ui/UIEditBox/UIEditBoxImpl-wasm.cpp
  )
elseif(ANDROID)
  set(_AX_UI_SPECIFIC_HEADER
    ui/UIWebView/UIWebView.h
    ui/UIWebView/UIWebViewImpl-android.h
    ui/UIEditBox/UIEditBoxImpl-android.h
  )
  set(_AX_UI_SPECIFIC_SRC
    ui/UIEditBox/UIEditBoxImpl-android.cpp
    ui/UIWebView/UIWebViewImpl-android.cpp

    # it's special for android, not a common file
    ui/UIWebView/UIWebView.cpp
  )
endif()

if(AX_ENABLE_MEDIA)
  set(_AX_UI_SPECIFIC_HEADER ui/UIMediaPlayer.h ${_AX_UI_SPECIFIC_HEADER})
  set(_AX_UI_SPECIFIC_SRC ui/UIMediaPlayer.cpp ${_AX_UI_SPECIFIC_SRC})
endif()

set(_AX_UI_HEADER
  ${_AX_UI_SPECIFIC_HEADER}
  ui/axmol-ui.h
  ui/GUIDefine.h
  ui/GUIExport.h
  ui/UIAbstractCheckButton.h
  ui/UIButton.h
  ui/UICheckBox.h
  ui/UIHBox.h
  ui/UIHelper.h
  ui/UIImageView.h
  ui/UILayout.h
  ui/UILayoutComponent.h
  ui/UILayoutManager.h
  ui/UILayoutParameter.h
  ui/UIListView.h
  ui/UILoadingBar.h
  ui/UIPageView.h
  ui/UIPageViewIndicator.h
  ui/UIRadioButton.h
  ui/UIRelativeBox.h
  ui/UIRichText.h
  ui/UIScale9Sprite.h
  ui/UIScrollView.h
  ui/UIScrollViewBar.h
  ui/UISlider.h
  ui/UITabControl.h
  ui/UIText.h
  ui/UITextAtlas.h
  ui/UITextBMFont.h
  ui/UITextField.h
  ui/UITextFieldEx.h
  ui/UIVBox.h
  ui/UIWidget.h
)

set(_AX_UI_SRC
  ${_AX_UI_SPECIFIC_SRC}
  ui/axmol-ui.cpp
  ui/UIButton.cpp
  ui/UIAbstractCheckButton.cpp
  ui/UICheckBox.cpp
  ui/UIRadioButton.cpp
  ui/UIHBox.cpp
  ui/UIHelper.cpp
  ui/UIImageView.cpp
  ui/UILayout.cpp
  ui/UILayoutManager.cpp
  ui/UILayoutParameter.cpp
  ui/UIListView.cpp
  ui/UILoadingBar.cpp
  ui/UIPageView.cpp
  ui/UIPageViewIndicator.cpp
  ui/UIRelativeBox.cpp
  ui/UIRichText.cpp
  ui/UIScale9Sprite.cpp
  ui/UIScrollView.cpp
  ui/UIScrollViewBar.cpp
  ui/UISlider.cpp
  ui/UIText.cpp
  ui/UITextAtlas.cpp
  ui/UITextBMFont.cpp
  ui/UITextField.cpp
  ui/UIVBox.cpp
  ui/UIWidget.cpp
  ui/UIEditBox/UIEditBox.cpp
  ui/UILayoutComponent.cpp
  ui/UIEditBox/UIEditBoxImpl-common.cpp
  ui/UITabControl.cpp
  ui/UITextFieldEx.cpp
)
